import request from '@/utils/request';
import type { BaseBeanModel, ResponsePageData, ResponseBaseData, QueryParamModel } from '@/api/model/baseModel';
const basePath = '/appsys/datapermissions/SysDataPermissionsMethodRest';
const menuBasePath = '/appsys/menu';
const methodPath = '/platform6/sysdatapermissionsmethod/SysDataPermissionsMethodRest';
/** 数据权限方法维护表 */
export interface SysDataPermissionsMethodDto extends BaseBeanModel {
  /** 类型 0:普通模块 1:电子表单 2：选择页 3：自定义 */
  type?: string;
  /** 表名 */
  tableName?: string;
  /** 表说明 */
  tableRemarks?: string;
  /** mapper文件 */
  mapperName?: string;
  /** mapper说明 */
  mapperRemarks?: string;
  /** 执行方法 */
  method?: any;
  /** 方法说明 */
  methodRemarks?: string;
  /** ATTRIBUTE_01 */
  attribute01?: string;
  /** ATTRIBUTE_02 */
  attribute02?: string;
  /** ATTRIBUTE_03 */
  attribute03?: string;
  /** ATTRIBUTE_04 */
  attribute04?: string;
  /** ATTRIBUTE_05 */
  attribute05?: string;
  /** ATTRIBUTE_06 */
  attribute06?: string;
  /** ATTRIBUTE_07 */
  attribute07?: string;
  /** ATTRIBUTE_08 */
  attribute08?: string;
  /** ATTRIBUTE_09 */
  attribute09?: string;
  /** ATTRIBUTE_10 */
  attribute10?: string;
  /** 菜单ID */
  menuId?: string;
  /** 状态 */
  state?: string;
  /** 选择页面类型 0：平台选择页面 1：电子表单数据字典 2：自定义 */
  selectType?: string;
  /** 选择页面唯一标识 */
  selectId?: string;
  /** 电子表单视图编码 */
  viewCode?: string;
  /** 电子表单视图名称 */
  viewName?: string;
  /** SYS_APPLICATION_ID */
  sysApplicationId?: string;
  /** 服务编码 */
  serviceName?: string;
  /** 菜单类型（1:BS;2:VUE）  */
  menuType?: string;
  /** 默认规则 */
  defMethod?: string;
  /** 原sql预览 */
  sqlPreview?: string;
}

/**
 * 获取前台菜单树
 * @param menuType 菜单类型
 * @returns 树数据
 */
export function getSubMenuTree(menuType: string): Promise<ResponseBaseData<any>> {
  return request.get(`${menuBasePath}/getSubMenuTree/5/-1/${menuType}`);
}

/**
 * 搜索树
 * @param value 搜索值
 * @param menuType 菜单类型
 * @returns 树数据
 */
export function selectSubMenuTree(value: string, menuType: string): Promise<ResponseBaseData<any>> {
  return request.get(`${menuBasePath}/searchMenuTree/${menuType}?searchText=${value}`);
}

/**
 * 获取分页数据
 * @param param 表格参数
 * @param id 菜单树节点id
 * @returns 表格数据
 */
export function listSysDataPermissionsMethodByPage(
  param: QueryParamModel,
  id: string
): Promise<ResponsePageData<SysDataPermissionsMethodDto>> {
  return request.post(`${basePath}/getSysDataPermissionsMethodsByPage/v1/${id}`, param);
}

/**
 * 根据id加载授权数据
 * @param id 选中数据的id
 * @returns 详情数据
 */
export function getSysDataPermissionsMethod(id: string): Promise<ResponseBaseData<SysDataPermissionsMethodDto>> {
  return request.get(`${basePath}/getMain/v1/${id}`);
}

/**
 * 保存表单数据
 * @param form 表单数据
 */
export function saveSysDataPermissionsMethod(form: SysDataPermissionsMethodDto): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/saveMain/v1`, form);
}

/**
 * 编辑表单数据
 * @param form 表单数据
 */
export function updateSysDataPermissionsMethod(form: SysDataPermissionsMethodDto): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/updateMain/v1`, form);
}

/**
 * 根据id集合删除数据
 * @param ids 选中数据id集合
 */
export function delSysDataPermissionsMethod(ids: string): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/deleteMainById/v1`, ids);
}

/**
 * 根据id集合批量删除数据
 * @param ids 选中数据id集合
 */
export function delSysDataPermissionsMethods(ids: string[]): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/delete-main-by-ids/v1`, ids);
}

/**
 * 获取表名称数据
 * @param type serviceName
 * @param param 表格参数
 * @returns 表名称数据
 */
export function getTables(param, type): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/getTables/v1/${type}`, param);
}

/**
 * 获取mapper名称
 * @param param 表格参数
 * @returns mapper数据
 */
export function getAllMapperData(param): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/getAllMapperData/v1`, param);
}

/**
 * sql预览
 * @param param 查询sql参数
 * @returns sql预览数据
 */
export function getSqlByMapperAndMethodName(param): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/getSqlByMapperAndMethodName/v1`, param);
}

/**
 * 获取执行方法
 * @param param 查询sql参数
 * @returns sql预览数据
 */
export function getMapperMethod(param): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/getMapperMethod/v1`, param);
}

/**
 * 行数据权限明细
 * @param param 查询参数
 * @param id 选中行数据id
 * @returns sql预览数据
 */
export function getAuthDetail(param, id: string): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/getAuthDetail/v1/${id}`, param);
}

/**
 * 是否开启数据权限日志
 * @param state 状态
 */
export function updatelogState(state: string): Promise<ResponseBaseData<any>> {
  return request.post(`${methodPath}/updateLogState/v1`, `${state}`);
}

/**
 * 复制方法
 * @param state 状态
 */
export function insertSysDataPermissionsCopyMethod(param): Promise<ResponseBaseData<any>> {
  return request.post(`${methodPath}/insertSysDataPermissionsCopyMethod/v1`, param);
}
